Spring的IOC容器仅仅是一个逻辑容器。负责对象的创建和销毁。尤其是销毁。IOC容器对对象的销毁仅仅是逻辑上的。刚开始的时候一直搞不清楚IOC容器与JVM之间的关系。JVM如果是一个仓库,那么Spring IOC容器就是JVM仓库的前面的一个杂货店。

xml<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="myCar" class="com.maishuiguo.datasource.MyCar"
    init-method="init"
    destroy-method="destory"
    >
    </bean>
</beans>
javapackage com.maishuiguo.datasource;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {

    public static void main(String[] args) {

        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
                "beans.xml");

        MyCar myCar = (MyCar) context.getBean("myCar");
        context.close();

    System.out.println(myCar.getName());    //打印出audio
    }

}

关闭了容器,依然能够打印出值。
Spring的单例也是在一个IOC容器的单例。
那么可以想到,Spring的单例实现不是直接使用的静态变量(静态变量在JVM中是唯一的),而是使用一个(JVM的)beanfactroy使用map来存储这个IOC容器内的单例。
如果要使在JVM里面都是单例呢?那么只需要让只有这个商店卖这个货物就行了。


happyfish
2.4k 声望66 粉丝

[链接]


« 上一篇
JAVA 集合框架
下一篇 »
LeetCode(1)